#pragma once
#include <vector>

#include "Utility/Algebra/Point.h"

#include "DataStructure/Common/DataStructureNamespace.h"
#include "DataStructure/Common/Id.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN
/// @brief 任意梁截面
///
/// 通过外轮廓和一个或者多个内轮廓上的点位置来给定截面形状，
/// 内轮廓线的面外矢量方向应该与内外轮廓相反
struct BeamSectionArbitrary
{
    SG::DataStructure::Common::Id                m_id;     ///< 截面属性id
    std::vector<SG::Algebra::Point>              m_outer;  ///< 外轮廓
    std::vector<std::vector<SG::Algebra::Point>> m_holes;  ///< 截面内部孔洞
};

SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE